package com.study.io.bio.demo.input;

import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;

/**
 * 数据输入流 继承FilterInputStream 装饰类
 * 能以一种与机器无关的方式，直接从字节输入流读取JAVA基本类型和String类型的数据
 * 注意readUTF 必须与writeUTF一起使用 否则会抛异常
 *
 * @author wuxj
 */
public class DataInputStreamDemo {

    public static void main(String[] args) throws Exception {
        File file = new File("d://123.txt");
        if (!file.exists()) {
            throw new RuntimeException("要读取的文件不存在");
        }

        //创建文件字节读取流对象时，必须明确与之关联的数据源。
        FileInputStream fis = new FileInputStream(file);
        DataInputStream dis = new DataInputStream(fis);

        //注意readUTF 必须与writeUTF一起使用 否则会抛异常
        System.out.println(dis.readUTF());

        //字节流读取
        byte[] b = new byte[256];
        int len;
        while ((len = dis.read(b)) > 0) {
            System.out.println(new String(b));
        }
        dis.close();
        fis.close();
    }
}
